//
//  VIPRTCProtocol.h
//  TTProduct
//
//  Created by Taurin on 2019/12/17.
//  Copyright © 2019 TTProduct. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

typedef NS_ENUM(NSInteger, VIPVideoStreamType) {
    VIPVideoStreamTypeHigh = 0, // 大流
    VIPVideoStreamTypeLow  = 1, // 小流
};

// 被动
typedef void (^LiveLocalWillJoin)(NSUInteger uid); // 本地即将进入回调
typedef void (^LiveLocalDidJoined)(NSUInteger uid); // 本地已经进入回调
typedef void (^LiveLocalDidReJoined)(NSUInteger uid); // 本地重新进入回调
typedef void (^LiveRemoteDidJoined)(NSUInteger uid); // 远端进入回调

typedef void (^LiveFirstVideoDecoded)(NSUInteger uid); // 视频第一帧回调

typedef void (^LiveDidStreamMuted)(BOOL muted, NSUInteger uid); // 远端视频/ 音频(关闭/打开)回调

typedef void (^LiveAudioVolumeIndication)(NSUInteger uid, NSInteger value); // 音量质量回调
typedef void (^LiveVideoNetworkQuality)(NSUInteger uid, NSInteger level); // 网络质量回调

typedef void (^LiveDidOffline)(NSUInteger uid); // 有用户离开回调
typedef void (^LiveTokenDidFailure)(void); // Token已经失效回调
typedef void (^LiveQuitRoom)(void); // 退出回调

@protocol VIPRTCProtocol <NSObject>

@optional

// 主动: 请求
// 进入房间
- (void)joinLiveVideo:(NSView *)localView;

// 退出房间
- (void)quitLiveVideo:(LiveQuitRoom)quitLiveVideoEvent;

// 切换视频分辨率(大流/小流)
- (void)setRemoteVideoStream:(NSUInteger)uid type:(VIPVideoStreamType)type;

// 本地视频采集 (NO:打开/ YES:关闭)
- (void)enableLocalVideoStream:(BOOL)open;

// 本地视频推流 (NO:打开/ YES:关闭)
- (void)pushLocalVideoStream:(BOOL)muted;
// 本地音频推流 (NO:打开/ YES:关闭)
- (void)pushLocalAudioStream:(BOOL)muted;

// 远端视频拉流个人 (NO:打开/ YES:关闭)
- (void)pullRemoteVideoStream:(NSUInteger)uid muted:(BOOL)muted;
// 远端音频拉流个人 (NO:打开/ YES:关闭)
- (void)pullRemoteAudioStream:(NSUInteger)uid muted:(BOOL)muted;

// 远端视频拉流全部 (NO:打开/ YES:关闭)
- (void)pullRemoteVideoStreamAll:(BOOL)muted;
// 远端音频拉流全部 (NO:打开/ YES:关闭)
- (void)pullRemoteAudioStreamAll:(BOOL)muted;

// 设置美颜效果选项
- (void)setBeautyEffect:(BOOL)enable;

// iPhone
#if TARGET_OS_IPHONE
// 切换前置摄像头 
- (void)switchCamera;
#endif

// 屏幕共享
// 全屏
- (int)sharedFullScreen;
// 指定窗口
- (int)sharedScreenWindowId:(NSUInteger)windowId;

- (int)stopScreenCapture;

@end

NS_ASSUME_NONNULL_END
